home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 429_01 / chess12 / chess.doc < prev    next >
Text File  |  1994-05-03  |  4KB  |  128 lines

  1.             MS-DOS CHESS PROGRAM FOR IBM PC COMPATIBLES
  2.                 Version 1.0
  3.  
  4. USAGE
  5.  
  6. CHESS white-player black-player
  7.  
  8. A player (white or black) is specified as one of "U", "C1", "C2" or
  9. "C3".  "U" specifies that the player's moves will be selected by the
  10. user.  "C1", "C2" or "C3" specifies that the player's moves will be
  11. selected by the computer.  The digit (1, 2 or 3) gives the relative
  12. skill level with which the computer selects the player's moves.  For
  13. example, the command:
  14.  
  15. CHESS C2 U
  16.  
  17. starts a game with the computer selecting the white player's moves (at
  18. skill level 2) and the user selecting the black player's moves.  The
  19. default for black-player is C2, and the default for white-player is U.
  20. It is legal for both players to be user-controlled, or for both
  21. players to be computer-controlled.  When playing at skill level 3, the
  22. computer will take several minutes to select each move.
  23.  
  24. Pieces on the chess board are represented by two letter strings.  The
  25. first letter is W (for a white piece) or B (for a black piece).  Here
  26. is the legend for the second letter:
  27.  
  28. P - Pawn
  29. R - Rook
  30. N - Knight
  31. B - Bishop
  32. Q - Queen
  33. K - King
  34.  
  35. IMPLEMENTATION
  36.  
  37. The following files contain the source code for the program:
  38.  
  39. brdsize.hpp
  40. charui.cpp
  41. charui.hpp
  42. chcharui.cpp
  43. chcharui.hpp
  44. chess.cpp
  45. chess.hpp
  46. chessui.cpp
  47. chessui.hpp
  48. cplayer.cpp
  49. cplayer.hpp
  50. main.cpp
  51. misc.hpp
  52. player.hpp
  53. uplayer.cpp
  54. uplayer.hpp
  55.  
  56. Here are the important class hierarchies:
  57.  
  58.                    PIECE
  59.                      *
  60.                      *
  61.     ************************************
  62.     *      *      *       *      *     *
  63.     *      *      *       *      *     *
  64.    KING  QUEEN  BISHOP  KNIGHT  ROOK  PAWN
  65.  
  66.  
  67.               PLAYER
  68.                 *
  69.           **************
  70.           *            *
  71.           *            *
  72.    COMPUTERPLAYER  USERPLAYER
  73.  
  74.  
  75.       CHARUSERIFACE
  76.             *
  77.             *
  78.     CHESSCHARUSERIFACE
  79.             *
  80.             *
  81.       CHESSUSERIFACE
  82.  
  83.  
  84. This program uses BIOS calls to interface with the screen and
  85. keyboard.  It could be ported to another character-oriented API by
  86. changing the implementation of CHARUSERIFACE.  It could be ported to a
  87. GUI API by changing the implementation of CHESSUSERIFACE.
  88.  
  89. ALGORITHM FOR COMPUTER PLAYER
  90.  
  91. The algorithm for the computer player appears in the play() member
  92. function of COMPUTERPLAYER.  The first step is to find the list of
  93. possible moves which are predicted to get the opponent in checkmate,
  94. or provide the most material gain (or minimize material loss).  This
  95. prediction is done by looking ahead several moves.  The number of
  96. moves of look-ahead is 2 for skill level 1, 3 for skill level 2, and 4
  97. for skill level 3.  The look-ahead is performed by the recursive
  98. findBestMove() member function of the BOARD class.  To select among
  99. the list of best moves, a "coverage/threat" metric is used.  This
  100. metric measures how much of the board will be "attackable" after the
  101. move, giving extra points for blocking moves by the opponent's king.
  102. It also encourages moving pieces closer to the opponent king.
  103.  
  104. Please send all comments and bug reports to:
  105.  
  106. Walt Karas
  107. 118 Barcelona Ct.
  108. Cary, NC 27513
  109.  
  110. This program is no Deep Thought, and can easily be beaten by a good
  111. human player.
  112.  
  113. VERSION INFORMATION
  114.  
  115. Version 1.0
  116. o  Initial release.
  117.  
  118. Version 1.1
  119. o  Removal of obscure bug in Computer Player play() member function.
  120. o  Fine tuning of best development metric.
  121. o  Removal of useless "usage" printing code.
  122. o  Removal of bug with en passant move logic which caused pawns to
  123.    "disappear" from internal representation of board, although they
  124.    were still on the screen.
  125.  
  126. Version 1.2
  127. o  Small changes, essentially cosmetic in nature.
  128.